In many work scenarios, it is desirable for a plurality of workers to collaborate on a project to find a solution to a problem. For example, in the context of software development, it is often desirable for a plurality of developers to collaborate to write the source code for a particularly difficult part of a program. With such collaboration, the solution is often discovered faster than if the individuals had worked on the problem by themselves.
Collaboration can be achieved in many different ways. One possible way is to physically gather all of the people so that they are present and working together in the same location. With workers spread throughout the country and throughout the world, however, this is often not practical. Collaboration may also be achieved electronically. With tools such as instant messaging, email, and electronic file transfer, workers can collaborate by sending messages and files to each other. For example, a developer may email a portion of source code to a colleague and ask the colleague for advice on how to implement a particular functionality. The colleague can then edit the source code and send the updated source code back. While these tools do enable workers to communicate and exchange ideas, they do not truly enable the workers to collaborate in the full sense of the word. Each worker cannot see what the other is doing while he is doing it, and there are often significant delays between the request for information/advice and the receipt thereof. Thus, the collaboration is not very interactive.
To facilitate more interactive collaboration, some computing tools have been developed in recent years that allow multiple parties using multiple machines (e.g. computers) to view a file at the same time. With such tools, the file may be edited by one of the workers, and the edits may be viewed by all of the other workers. Some of these tools even allow different workers to take turns making edits to the file. While such tools do represent improvements over the previous approaches, they still have significant limitations. For example, these tools allow only one worker to make edits to the file at a time. Because of this and other limitations, these tools are not as fully interactive and collaborative as would be desired. As a result, an improved collaboration mechanism is needed.